/**
 * 认证相关配置
 */

/**
 * 公开路由列表 - 不需要登录即可访问的页面
 */
export const PUBLIC_ROUTES = [
  '/login',
  '/register',
  '/about',
  '/help',
  '/privacy',
  '/terms',
  '/gis', // 3D地球演示页面
  '/gis-management',
  '/gis-detail'
];

/**
 * 登录后默认跳转路径
 */
export const DEFAULT_REDIRECT_PATH = '/';

/**
 * 认证相关的localStorage键名
 */
export const AUTH_STORAGE_KEYS = {
  TOKEN: 'token',
  USER: 'user',
  REDIRECT_PATH: 'redirectPath',
  FORM_CACHE_PREFIX: 'formCache_'
};

/**
 * 认证提示配置
 */
export const AUTH_MODAL_CONFIG = {
  // 自动跳转倒计时（秒）
  AUTO_REDIRECT_COUNTDOWN: 5,
  // 是否显示倒计时
  SHOW_COUNTDOWN: true,
  // 默认提示文案
  DEFAULT_TITLE: '需要登录',
  DEFAULT_CONTENT: '您需要登录后才能继续操作，是否立即登录？',
  SESSION_EXPIRED_TITLE: '登录已过期',
  SESSION_EXPIRED_CONTENT: '您的登录状态已过期，请重新登录。'
};

/**
 * 表单缓存配置
 */
export const FORM_CACHE_CONFIG = {
  // 缓存过期时间（分钟）
  EXPIRE_MINUTES: 30,
  // 最大缓存数量
  MAX_CACHE_COUNT: 10,
  // 是否自动清理过期缓存
  AUTO_CLEAN: true
};

/**
 * 检查路由是否为公开路由
 */
export const isPublicRoute = (path: string): boolean => {
  return PUBLIC_ROUTES.some(route => {
    // 精确匹配或路径开头匹配
    return path === route || path.startsWith(route + '/');
  });
};

/**
 * 获取登录后的重定向路径
 */
export const getRedirectPath = (): string => {
  const savedPath = sessionStorage.getItem(AUTH_STORAGE_KEYS.REDIRECT_PATH);
  if (savedPath && !isPublicRoute(savedPath)) {
    return savedPath;
  }
  return DEFAULT_REDIRECT_PATH;
};

/**
 * 保存重定向路径
 */
export const saveRedirectPath = (path: string): void => {
  if (!isPublicRoute(path)) {
    sessionStorage.setItem(AUTH_STORAGE_KEYS.REDIRECT_PATH, path);
  }
};

/**
 * 清除重定向路径
 */
export const clearRedirectPath = (): void => {
  sessionStorage.removeItem(AUTH_STORAGE_KEYS.REDIRECT_PATH);
};